package com.zmn.oms.model.dto.order.open;

import lombok.Data;
import lombok.ToString;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * 类描述：新单订单
 *
 * @author liuying
 * @date 2019/02/16 17:09
 */
@Data
@ToString(callSuper = true)
public class CreateOrderDTO implements Serializable {

    /**
     * 渠道ID
     */
    @NotNull(message = "渠道ID不能为空")
    private Integer channelId;

    /**
     * 城市id
     */
    @NotNull(message = "城市不能为空")
    private Integer cityId;

    /**
     * 登录手机号(用于第三方平台的登录用户) lhl-2020.12.16
     */
    private String loginPhone;

    /**
     * 联系人
     */
    private String contactName;

    /**
     * 性别：1 男; 2 女; 3 保密
     */
    private Integer gender;

    /**
     * 客户电话1
     */
    @NotEmpty(message = "客户电话不能为空")
    private String telephone;

    /**
     * 客户电话2
     */
    private String telephone2;

    /**
     * 客户电话3
     */
    private String telephone3;

    /**
     * 街道
     */
    @NotEmpty(message = "街道不能为空")
    private String street;

    /**
     * 客户地址具体门牌号
     */
    private String address;

    /**
     * 经度
     */
    private Double longitude;

    /**
     * 纬度
     */
    private Double latitude;

    /**
     * 预约时间
     */
    private Date dutyTime;

    /**
     * 产品id
     */
    @NotNull(message = "产品不能为空")
    private Integer productId;

    /**
     * 数量
     */
    @NotNull(message = "产品数量不能为空")
    private Integer productCount;

    /**
     * 渠道预付
     */
    private Integer channelPrepayAmount;

    /**
     * 渠道预付状态  1:未支付  4:已支付
     */
    private Integer channelPrepayStatus;

    /**
     * 订单备注
     */
    private String remark;

    /**
     * 第三方订单ID
     */
    private String thirdOrderId;

    /**
     * 第三方订单ID（选填），用于对应第三方的二级订单ID等
     */
    private String thirdOrderId2;

    /**
     * 订单优惠信息
     */
    private OpenOrderDiscountDTO orderDiscount;

    /**
     * 第三方扩展数据
     */
    private String extraData;

    private String outerJsonData;

    /**
     * 订单类型：1 新单、2 返修单，可以为空，为空时按新单处理
     */
    private Integer type;

    /**
     * 返修订单ID，为啄木鸟订单ID
     */
    private Long reworkId;

    /**
     * 厂商单标志：厂商单传固定值：2；非厂商单可不传
     */
    private Integer factory;

    /**
     * 标识产品是否在保，当factory字段的值为2时，该字段有效
     * 1：出保，2：在保，不传的话，默认值：1
     */
    private Integer facInWarranty;

    /**
     * 厂商产品ID，当factory字段的值为2时，该字段有效且必填
     */
    private String facProductId;

    /**
     * 加密字段，支持字段包括 contactName,telephone,street,address 等，多个字段用逗号分开
     */
    private String filedEncrypt;
}
